﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Persistencia.Contexto;
using GestorDeFlotasModelo.Factorias;
using Persistencia;
using GestorDeFlotasModelo.Entities;
using GestorDeFlotasDesktop.UILogic;
using GestorDeFlotasDesktop.AbmAuto;
using GestorDeFlotasDesktop.Asignacion;
using GestorDeFlotasDesktop.AbmChofer;
using GestorDeFlotasDesktop.AbmReloj;
using GestorDeFlotasDesktop.AbmTurno;
using GestorDeFlotasDesktop.RegistrarViaje;

namespace GestorDeFlotasDesktop
{
    public partial class frmMenu : BaseForm
    {
        public frmMenu()
        {
        //    this.usuarioActual = usuarioActual;
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            if (Contexto.Usuario != null)
            {
                funcAuto.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Auto"));
                funcChofer.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Chofer"));
                funcEstadisticas.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "Listado Estadístico"));
                funcCliente.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Cliente"));
                funcReloj.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Reloj"));
                funcRendiciones.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "Rendición de cuenta del chofer"));
                funcRol.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Rol"));
                funcTurno.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Turno"));
                funcUsuario.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "ABM de Usuario"));
                funcViaje.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "Registro de Viajes"));
                funcFacturar.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "Facturación a Cliente"));
                funcAsignarAutoAChofer.Visible = Contexto.Usuario.Roles.Any(x => x.Funcionalidades.Any(y => y.Nombre == "Asignación Chofer-Auto"));
            }
        }

        private void funcCerrarSesion_Click(object sender, EventArgs e)
        {
            this.Hide();
            new Login.frmLogin().Show();
        }

        private void funcUsuario_Click(object sender, EventArgs e)
        {

        }

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {

        }

        private void modificacionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }

        private AbmUsuario.AbmUsuario userForm = null;
        private void altaToolStripMenuItem5_Click(object sender, EventArgs e)
        {
                userForm = new AbmUsuario.AbmUsuario();

            userForm.Show();
        }

        private void bajaAuto_Click(object sender, EventArgs e)
        {
            frmListadoAuto autoForm = new frmListadoAuto(true);

            autoForm.Show();
        }

        private void modifAuto_Click(object sender, EventArgs e)
        {
            frmListadoAuto autoForm = new frmListadoAuto(false);

            autoForm.Show();
        }

        private void bajaToolStripMenuItem5_Click(object sender, EventArgs e)
        {
            FormUsuario form = new FormUsuario();
            form.Show();
            form.LoadForm(FormMode.Add, null);
        }


        private void altaAuto_Click(object sender, EventArgs e)
        {
            frmFormAuto autoForm = new frmFormAuto(null, null);

            autoForm.Show();
        }

        private void asignacionesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAsignacion fasig=  new FormAsignacion();
            fasig.Show();
        }

        private void bajaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmListadoChofer choferForm = new frmListadoChofer(true, false);

            choferForm.Show();
        }

        private void modificacionToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmListadoChofer choferForm = new frmListadoChofer(false, false);

            choferForm.Show();
        }

        private void altaToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            frmFormReloj relojForm = new frmFormReloj(null, new frmListadoReloj(false));

            relojForm.Show();
        }

        private void bajaToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            frmListadoReloj relojForm = new frmListadoReloj(true);

            relojForm.Show();
        }

        private void modificacionToolStripMenuItem2_Click(object sender, EventArgs e)
        {
            frmListadoReloj relojForm = new frmListadoReloj(false);

            relojForm.Show();
        }



        private void altaToolStripMenuItem6_Click(object sender, EventArgs e)
        {
            RegistrarViajes v = new RegistrarViajes(null);
            v.Show();
        }

        private void altaToolStripMenuItem4_Click(object sender, EventArgs e)
        {
          //  FormularioTurno ft = new FormularioTurno();
           // ft.Show();
        }

        private void bajaToolStripMenuItem4_Click(object sender, EventArgs e)
        {
            AbmTarifa.AbmTarifa T = new GestorDeFlotasDesktop.AbmTarifa.AbmTarifa();
            T.Show();
        }

        private void altaToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            FormRol form = new FormRol();
            form.Show();
            form.LoadForm(FormMode.Add, null);
        }

        private void listadoToolStripMenuItem3_Click(object sender, EventArgs e)
        {
            AbmRol.AbmRol abm = new AbmRol.AbmRol();
            abm.Show();
        }

        private void mejoresAutosToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MejoresAutos.MejoresAutos m = new GestorDeFlotasDesktop.MejoresAutos.MejoresAutos();
            m.Show();
        }

        private void mejoresChoferesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MejoresChoferes.MejoresChoferes m = new GestorDeFlotasDesktop.MejoresChoferes.MejoresChoferes();
            m.Show();
        }

        private void mejoresClientesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MejoresClientes.MejoresClientes m = new GestorDeFlotasDesktop.MejoresClientes.MejoresClientes();
            m.Show();
        }

        private void listadoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AbmCliente abm = new AbmCliente();
            abm.Show();
        }

        private void altaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormCliente form = new FormCliente();
            form.Show();
        }

        private void ingresarFacturaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Facturar.Facturar form = new Facturar.Facturar();
            form.Show();
        }

        private void rendirViajesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            new RendirViajes.frmRendirViajes().Show();
        }

        private void listarFacturasToolStripMenuItem1_Click(object sender, EventArgs e)
        {

        }

        private void altaToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            frmFormChofer choferForm = new frmFormChofer(null, null);

            choferForm.Show();
        }
    }
}
